home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1999 #2 / Amiga Plus CD - 1999 - No. 2.iso / System-Boost / Workbench / BackClock / sources / conf.c next >
Encoding:
C/C++ Source or Header  |  1998-11-09  |  4.4 KB  |  148 lines

  1. /*****************************************************************************
  2.  * 
  3.  * name                    : conf.c
  4.  * description            : load & save prefs file
  5.  * version                : 1.1c
  6.  *
  7.  * created                : 08-03-98
  8.  * last change            : 17-10-98
  9.  *
  10.  * version:
  11.  * 1.0 : initial
  12.  * 1.1a: minor fix
  13.  * 1.1b: Default configuration fixed
  14.  * 1.1c: minor change
  15.  *   
  16.  *****************************************************************************
  17.  */
  18. #include <dos/dos.h>
  19. #include <exec/memory.h>
  20. #include <intuition/intuition.h>
  21. #include <proto/exec.h>
  22. #include <proto/dos.h>
  23. #include <proto/intuition.h>
  24. #include <string.h>
  25. #include "utils.h"
  26. #include "conf.h"
  27. #include "obp.h"
  28.  
  29.  
  30.  
  31. void SaveEnv(idWin * prj, BOOL envarc) {
  32.   UBYTE * txtform = NULL ;
  33.   if (!SaveConf(prj, CF_NAMEENV)) {
  34.     /* error during saving
  35.      */
  36.     if (txtform = AllocVec(100, MEMF_PUBLIC|MEMF_CLEAR)) {
  37.       /* open an info request
  38.        */
  39.       strcat(txtform, ERR_ENV) ;
  40.       Fault(prj->lastError, ERR_ENV, txtform, 100) ;  
  41.       ez_req("BackClock request", txtform, "Continue", &(prj->lastError)) ;
  42.       FreeVec(txtform) ;
  43.     }
  44.   }
  45.   if (envarc) {
  46.     if (!SaveConf(prj, CF_NAMEENVARC)) {
  47.       /* error during saving
  48.        */
  49.       if (txtform = AllocVec(100, MEMF_PUBLIC|MEMF_CLEAR)) {
  50.         /* open an info request
  51.          */
  52.         strcat(txtform, ERR_ENVARC) ;
  53.         Fault(prj->lastError, ERR_ENVARC, txtform, 100) ;  
  54.         ez_req("BackClock request", txtform, "Continue", &(prj->lastError)) ;
  55.         FreeVec(txtform) ;
  56.       }
  57.     }
  58.   }
  59. }
  60.  
  61.  
  62. BOOL SaveConf(idWin * prj, UBYTE * fl_name) {
  63.   struct ConfFile cf_save ;
  64.   ULONG file ;
  65.   BOOL ret=FALSE ;
  66.   int i ;
  67.   
  68.   CopyMem("BACK", cf_save.id, 4) ;
  69.   cf_save.posX = prj->backWin.posX ;
  70.   cf_save.posY = prj->backWin.posY ;
  71.   cf_save.lenX = prj->backWin.width ;
  72.   cf_save.lenY = prj->backWin.height ;
  73.   for(i = 0; i<NUM_COLORS; i++)
  74.     CopyMem(&(prj->backWin.cmap[i]), &(cf_save.cmap[i]), sizeof(struct RGB)) ;
  75.   cf_save.filln = prj->backWin.filln ;
  76.   cf_save.fill = prj->backWin.fill ;
  77.   cf_save.drawsec = prj->backWin.drawsec ;
  78.   if (cf_save.fill !=0) cf_save.fill = -1 ;
  79.   if (file = Open(fl_name, MODE_NEWFILE)) {
  80.     Write(file, &cf_save, sizeof(struct ConfFile)) ;
  81.     Close(file) ;
  82.     prj->lastError = OK ;
  83.     ret=TRUE ;
  84.   }else prj->lastError = IoErr() ;
  85.   return ret ;
  86. }
  87.  
  88.  
  89. BOOL LoadConf(idWin * prj) {
  90.   /* Reload configuration file
  91.    */
  92.   struct ConfFile cf_load ;
  93.   ULONG file ;
  94.   BOOL ret = FALSE ;
  95.   int i ;
  96.  
  97.   prj->lastError = IoErr() ;
  98.   prj->backWin.posX =     0 ;
  99.   prj->backWin.posY =     prj->wb->BarHeight ;
  100.   prj->backWin.width =  100 ;
  101.   prj->backWin.height = 100 ;
  102.   prj->backWin.cmap[COL_SEC].reg = (UBYTE)getPen(prj, 0, 100, 200) ;
  103.   prj->backWin.cmap[COL_MIN].reg = (UBYTE)getPen(prj, 255, 0, 0) ;
  104.   prj->backWin.cmap[COL_HEU].reg = (UBYTE)getPen(prj, 0, 255, 0) ;
  105.   prj->backWin.cmap[COL_TIC].reg = (UBYTE)getPen(prj, 0, 0, 255) ;
  106.   prj->backWin.cmap[COL_BAC].reg = (UBYTE)getPen(prj, 0, 0, 0) ;
  107.   prj->backWin.cmap[COL_SEC].R   = 0 ;
  108.   prj->backWin.cmap[COL_SEC].G   = 100 ;
  109.   prj->backWin.cmap[COL_SEC].B   = 200 ;
  110.   prj->backWin.cmap[COL_MIN].R   = 255 ;
  111.   prj->backWin.cmap[COL_MIN].G   = 0 ;
  112.   prj->backWin.cmap[COL_MIN].B   = 0 ;
  113.   prj->backWin.cmap[COL_HEU].R   = 0 ;
  114.   prj->backWin.cmap[COL_HEU].G   = 255 ;
  115.   prj->backWin.cmap[COL_HEU].B   = 0 ;
  116.   prj->backWin.cmap[COL_TIC].R   = 0 ;
  117.   prj->backWin.cmap[COL_TIC].G   = 0 ;
  118.   prj->backWin.cmap[COL_TIC].B   = 255 ;
  119.   prj->backWin.cmap[COL_BAC].R   = 0 ;
  120.   prj->backWin.cmap[COL_BAC].G   = 0 ;
  121.   prj->backWin.cmap[COL_BAC].B   = 0 ;
  122.   prj->backWin.fill = FALSE ;
  123.   prj->backWin.filln = TRUE ;
  124.   if (file = Open("ENV:backclock.prefs", MODE_OLDFILE)) {
  125.     Read(file, &cf_load, 4) ;
  126.     if ((cf_load.id[0] == 'B') && 
  127.         (cf_load.id[1] == 'A') && 
  128.         (cf_load.id[2] == 'C') && 
  129.         (cf_load.id[3] == 'K')) {
  130.       Seek(file, 0, OFFSET_BEGINNING) ;
  131.       Read(file, &cf_load, sizeof(struct ConfFile)) ;
  132.       prj->backWin.posX = cf_load.posX ;
  133.       prj->backWin.posY = cf_load.posY ;
  134.       prj->backWin.width = cf_load.lenX ;
  135.       prj->backWin.height = cf_load.lenY ;
  136.       for(i = 0; i < NUM_COLORS; i++)
  137.         CopyMem(&(cf_load.cmap[i]), &(prj->backWin.cmap[i]), sizeof(struct RGB)) ;
  138.       prj->backWin.fill = (BOOL)cf_load.fill ;
  139.       prj->backWin.filln = cf_load.filln ;
  140.       prj->backWin.drawsec = cf_load.drawsec ;
  141.       initColors(prj) ;
  142.       ret = TRUE ;
  143.       prj->lastError = OK ;
  144.       Close(file) ;
  145.     }
  146.   }
  147.   return(ret) ;
  148. }